1.前言
2.Dart語言學習: Flutter生命週期方法:initState()
、Flutter 中其他常見的生命週期方法、單一模式(Singleton class)
今天的鐵人賽文章,應該是昨天的內容,但實在昨天文章: D11-實戰指南: 帶著 SQLite 踏上偉大的航道吧!內容已經太多,加上今天下班要和同事一起參加期待的烤肉大會,所以就把內容搬來當作今天的文章囉,小小偷懶一下😝
今天內容將會講解昨天文章有使用到的技巧和相關背景知識,讓我們開始吧!
initState()
// 是一個生命週期方法,當這個狀態對象被創建時會自動調用
void initState() {
super.initState();
// 使用單一模式的實例 (Use singleton instance)
_scoreHistoryDB = ScoreHistoryDB
.instance; // _scoreHistoryDB 變數被初始化為 ScoreHistoryDB.instance
// 這表示使用單一模式的方式來獲取 ScoreHistoryDB 的實例,用於與分數歷史記錄資料庫進行交互
}
這段程式碼出現在 _ScoreHistoryDBPageState
類別的 initState()
方法中,這是 Flutter 中的一個生命週期方法,當狀態對象(state object)被創建時,它會自動被調用。
在這個方法中,主要執行了以下操作:
super.initState()
:這是調用父類 State
的 initState()
方法。這是必要的,因為 Flutter 的生命週期方法通常都需要調用父類的對應方法,以確保正確的生命週期順序。
_scoreHistoryDB
初始化:這行程式碼初始化了 _scoreHistoryDB
變數,這個變數用於與分數歷史記錄資料庫進行交互。換句話說,它將 _scoreHistoryDB
變數設置為 ScoreHistoryDB.instance
。
ScoreHistoryDB
是一個自定義的類別,代表了分數歷史記錄的資料庫。在這個類別中,實現了單一模式,這意味著只有一個 ScoreHistoryDB
實例存在於應用程式中。
.instance
是 ScoreHistoryDB
類別的一個靜態 getter 方法。通過調用這個方法,可以獲取 ScoreHistoryDB
的單一實例。
總結,這段程式碼的目的是在 _ScoreHistoryDBPageState
狀態對象被創建時,初始化 _scoreHistoryDB
變數,以便在後續的操作中使用這個實例來進行分數歷史記錄資料庫的操作。這種方式確保了只有一個資料庫實例存在於應用程式中,並且可以在整個生命週期中共享和重複使用這個實例。
這些方法用於管理 widget 和狀態(State)的生命週期:
initState():
didChangeDependencies():
build():
didUpdateWidget():
setState():
dispose():
- MaterialApp
- Scaffold
- AppBar
- ListView
- ListTile
- ListTile
- ...
在這個範例中,MaterialApp 是整個應用程式的 root widget ,Scaffold 是頁面的結構,AppBar 是頁面的頂部導航欄,ListView 包含了多個 ListTile child widget ,它們用於顯示列表中的項目。deactivate():
didChangeAppLifecycleState():
這些生命週期方法可以幫助在 Flutter 應用程式中管理 widget 和狀態的行為,確保它們在適當的時候執行相應的操作以實現所需的功能和行為。根據 widget 的用途和需求,可以選擇使用這些方法中的一個或多個。
「單一類」或「單一模式」是一種軟體設計模式,目的是確保在應用程式運行期間只存在一個特定類別的實例。這種設計模式常用於需要共享資源或控制一些全域狀態的情況,以確保資源的一致性並防止不必要的資源重複建立。
以下是一個簡單的 Dart 範例,展示了如何實現一個單一類:
`class MySingleton {
// 私有的構造函式,防止外部實例化
MySingleton._privateConstructor();
// 單一實例變數
static final MySingleton _instance = MySingleton._privateConstructor();
// 靜態工廠函式,用來取得單一實例"
factory MySingleton() {
return _instance;
}
// 其他方法和屬性可以在這裡添加
}`
在這個範例中,MySingleton
類別使用了一個私有的構造函式 _privateConstructor
,以確保只能在類內部創建實例。它還使用了一個靜態變數 _instance
來保存唯一的實例。最後,通過一個靜態工廠方法 factory MySingleton()
來獲取單一實例。
因此,無論在應用程式的任何地方,只要調用 MySingleton()
就可以獲取到同一個 MySingleton
實例,確保了單一模式的實現。
Always listen to your heart because even though it’s on your left side, it’s always right.
總是聽從內心的聲音。因為即便它長在你的左邊,它卻總是對的買了一個重低音隨身型藍芽喇叭,邊做事邊聽歌超讚😍😍😍
今天要聽 Justin Bieber的《Anyone》